package com.example.yilanchatserver.business.freechat.service;

import com.example.yilanchatserver.application.controller.vo.UtopiaKnowledgeContentListVO;
import com.example.yilanchatserver.business.freechat.service.dto.*;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Flux;

import java.util.List;
import java.util.Map;

import org.springframework.http.ResponseEntity;
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;


@Service
public interface UtopiaService {


    String getChat(UtopiaChatDTO utopiaChatDTO) throws Exception;

    ResponseEntity<StreamingResponseBody> chatStreaming(UtopiaChatDTO utopiaChatDTO) throws Exception;

    void resetChat(UtopiaResetDTO utopiaResetDTO) throws Exception;

    List<YiLanKnowledgeData> getKnowledgeList(YiLanGetKnowledgeBaseListDTO yiLanGetKnowledgeBaseListDTO) throws Exception;

    Long createKnowledge(YiLanCreateKnowledgeBaseDTO utopiaCreateKnowledgeDTO) throws Exception;

    void updateKnowledge(YiLanCreateKnowledgeBaseDTO utopiaUpdateKnowledgeDTO) throws Exception;

    void deleteKnowledge(YiLanDeleteKnowledgeDTO yiLanDeleteKnowledgeDTO) throws Exception;

    UtopiaKnowledgeContentListVO getKnowledgeContentList(YiLanKnowledgeContentListDTO yiLanKnowledgeContentListDTO) throws Exception;

    Map createKnowledgeContent(YiLanCreateKnowledgeContentDTO yiLanCreateKnowledgeContentDTO) throws Exception;

    Map getKnowledgeContent(YiLanGetKnowledgeContentDTO yiLanGetKnowledgeContentDTO) throws Exception;

    void deleteKnowledgeContent(YiLanDeleteKnowledgeContentDTO yiLanDeleteKnowledgeContentDTO) throws Exception;

    Map createSpace(YiLanCreateSpaceDTO yiLanCreateSpaceDTO) throws Exception;

    List updateRole(YiLanUpdateRoleDTO yiLanUpdateRoleDTO) throws Exception;

    Map getRoleId(Long spaceId) throws Exception;

    Flux<String> send(UtopiaStreamDTO utopiaStreamDTO) throws Exception;
}
